package com.pedrocarrillo.expensetracker.utils;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.annotation.ArrayRes;
import android.support.design.widget.Snackbar;
import android.text.format.DateFormat;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
import com.pedrocarrillo.expensetracker.ExpenseTrackerApp;
import com.pedrocarrillo.expensetracker.R;
import java.util.Calendar;
import java.util.Date;
/**
* Created by Pedro on 9/20/2015.
*/
public class DialogManager {
private static DialogManager ourInstance = new DialogManager();
public static DialogManager getInstance() {
return ourInstance;
}
private DialogManager() {
}
public AlertDialog createEditTextDialog(Activity activity, String title, String confirmText, String negativeText, final DialogInterface.OnClickListener listener) {
LayoutInflater inflater = activity.getLayoutInflater();
View dialogLayout = inflater.inflate(R.layout.layout_dialog_edit_text, null);
return createAlertDialog(activity, title, dialogLayout, null, confirmText, negativeText, listener);
}
public void createCustomAcceptDialog(Activity activity, String title, String message, String confirmText, String negativeText, final DialogInterface.OnClickListener listener) {
createAlertDialog(activity, title, null, message, confirmText, negativeText, listener);
}
public void createSinglePickDialog(Activity activity, String title, @ArrayRes int arrayId, DialogInterface.OnClickListener listener) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(title)
.setItems(arrayId, listener);
builder.create().show();
}
public void createTimePickerDialog(Activity activity, int hour, int minute, TimePickerDialog.OnTimeSetListener listener) {
new TimePickerDialog(activity, listener, hour, minute, DateFormat.is24HourFormat(activity)).show();
}
private AlertDialog createAlertDialog(Activity activity, String title, View dialogLayout, String message, String confirmText, String negativeText, final DialogInterface.OnClickListener listener) {
ContextThemeWrapper ctw = new ContextThemeWrapper(activity, R.style.DialogTheme);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(ctw);
dialogBuilder.setTitle(title);
if (dialogLayout != null) dialogBuilder.setView(dialogLayout);
if (message != null) dialogBuilder.setMessage(message);
dialogBuilder.setCancelable(false);
dialogBuilder.setPositiveButton(confirmText, listener);
dialogBuilder.setNegativeButton(negativeText, listener);
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
return alertDialog;
}
public void showShortSnackBar(View view, String message) {
Snackbar.make(view, message, Snackbar.LENGTH_SHORT).show();
}
public void showShortToast(String message) {
Toast.makeText(ExpenseTrackerApp.getContext(), message, Toast.LENGTH_SHORT).show();
}
public void showDatePickerDialog(Context context, DatePickerDialog.OnDateSetListener dateSetListener, Calendar calendar) {
showDatePicker(context, dateSetListener, calendar,null, null);
}
public void showDatePicker(Context context, DatePickerDialog.OnDateSetListener dateSetListener, Calendar calendar, Date minDate, Date maxDate) {
DatePickerDialog datePickerDialog = new DatePickerDialog(context, dateSetListener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
if (minDate != null) datePickerDialog.getDatePicker().setMinDate(minDate.getTime());
if (maxDate != null) datePickerDialog.getDatePicker().setMaxDate(maxDate.getTime());
datePickerDialog.show();
}
}